package com.jjlin.service;

import com.jjlin.entity.Blog;
import com.jjlin.vo.BlogQuery;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;

import java.util.List;
import java.util.Map;

public interface BlogService {

    Blog getBlog(Long id);

    Blog getAndConvert(Long id);//获取blog内容，并将blog.content从Markdown格式转化为HTML格式

    Page<Blog> listBlog(Pageable pageable, BlogQuery blog);//后台管理搜索功能

    Page<Blog> listBlog(Pageable pageable);//查询所有发布的博客

    Page<Blog> listBlog(String query, Pageable pageable);//根据字符串全局搜索博客

    Page<Blog> listBlogByTypeId(Long id, Pageable pageable);//根据分类id查询博客

    Page<Blog> listBlogByTagId(Long id, Pageable pageable);//根据标签id查询博客

    Map<String, List<Blog>> archiveBlog();//对博客进行归档

    Long countBlog();//返回发布的所有博客的数量

    List<Blog> listRecommendBlogTop(Integer size);//查询推荐且发布的前size个博客

    List<Blog> listNewBlogTop(Integer size);//查询新发布的前size个博客

    Blog saveBlog(Blog blog);

    Blog updateBlog(Long id, Blog blog);

    void deleteBlog(Long id);
}
